const requestIp = require('request-ip');
const ipService = require('../services/ipService.js');
//
/**
 * 获取ip信息
 * @param {Request} req 请求对象
 * @param {Response} res 响应对象
 */
async function getIpInfo(req, res) {
	try {
		//
		const clientIP = requestIp.getClientIp(req);
		const result = await ipService.getIpInfo(clientIP);
		//
		res.status(200).json({
			status: 'success',
			message: '获取成功',
			data: result.data
		});
	} catch (error) {
		console.error('服务器发生错误：', error.message);
		res.status(500).json({
			status: 'error',
			message: error.message
		});
	}
}
/**
 * 精确获取ip地址
 * @param {Request} req 请求对象
 * @param {Response} res 响应对象
 */
async function getIpInfoPlus(req, res) {
	try {
		//
		const clientIP = requestIp.getClientIp(req);
		const result = await ipService.getIpInfoPlus({
			...req.body,
			...req.query,
			...req.params
		});
		//
		result.data.result.ip = clientIP;
		res.status(200).json(result.data);
	} catch (error) {
		console.error('服务器发生错误：', error.message);
		res.status(500).json({
			status: 'error',
			message: error.message
		});
	}
}
/**
 * 关键词提示
 * @param {Request} req 请求对象
 * @param {Response} res 响应对象
 */
async function suggestion(req, res) {
	try {
		//
		const result = await ipService.suggestion({
			...req.body,
			...req.query,
			...req.params
		});
		//
		res.status(200).json(result.data);
	} catch (error) {
		console.error('服务器发生错误：', error.message);
		res.status(500).json({
			status: 'error',
			message: error.message
		});
	}
}
/**
 * 获取路线规划
 * @param {Object} req
 * @param {Object} res
 */
async function getRoutePlanning(req, res) {
	try {
		//
		const result = await ipService.getRoutePlanning({
			...req.body,
			...req.query,
			...req.params
		});
		//
		res.status(200).json(result.data);
	} catch (error) {
		console.error('服务器发生错误：', error.message);
		res.status(500).json({
			status: 'error',
			message: error.message
		});
	}
}
/**
 * 查询附近门店
 * @param {Object} req
 * @param {Object} res
 */
async function getStoresList(req, res) {
	try {
		//
		const result = await ipService.getStoresList({
			...req.body,
			...req.query,
			...req.params
		});
		//
		res.status(200).json({
			status: 'success',
			message: '获取成功',
			data: result
		});
	} catch (error) {
		console.error('服务器发生错误：', error.message);
		res.status(500).json({
			status: 'error',
			message: error.message
		});
	}
}
/**
 * 查询附近门店
 * @param {Object} req
 * @param {Object} res
 */
async function getStores(req, res) {
	try {
		//
		const result = await ipService.getStores({
			...req.body,
			...req.query,
			...req.params
		});
		//
		res.status(200).json({
			status: 'success',
			message: '获取成功',
			data: result
		});
	} catch (error) {
		console.error('服务器发生错误：', error.message);
		res.status(500).json({
			status: 'error',
			message: error.message
		});
	}
}
//
module.exports = {
	getIpInfo,
	getIpInfoPlus,
	suggestion,
	getRoutePlanning,
	getStoresList,
	getStores
}